package com.hhq.demo.service;

import com.hhq.demo.bean.Courier;
import com.hhq.demo.bean.User;
import com.hhq.demo.bean.UserList;

import java.util.List;
import java.util.Map;

/**
 * @author HHQ
 * @date 2021年12月16日
 */
public interface UserService {

    /**
     * 查询控制台需要的数据
     *
     * @return map集合数据
     */
    Map<String, Object> consoleData();


    /**
     * 查询所有用户信息
     *
     * @return 用户集合
     */
    List<UserList> listAll();

    /**
     * 分页查询用户信息
     *
     * @param offset     起始索引
     * @param pageNumber 每页显示数量
     * @return 用户信息集合
     */
    List<UserList> listLimit(Integer offset, Integer pageNumber);

    /**
     * 新增用户
     *
     * @param user 用户
     * @return 受影响的行数
     */
    int insert(User user);


    /**
     * 修改用户信息
     *
     * @param id      要修改的用户的id
     * @param user 要修改的用户的信息
     * @param phone 原手机号
     * @return 受影响的行数
     */
    int update(Integer id, String phone, User user);

    /**
     * 根据取件码删除用户
     *
     * @param id id
     * @return 受影响的行数
     */
    int deleteById(Integer id);

    /**
     * 根据手机号查询用户信息
     *
     * @param phone 用户手机号
     * @return 用户信息
     */
    User findByPhone(String phone);

    /**
     * 根据手机号码认证并修改用户信息
     * @param user 用户信息
     * @return 受影响的行数
     */
    int updateByPhone(User user);

    /**
     * 根据旧手机号码修改用户名
     * @param phone 旧手机号码
     * @param username 要修改的用户信息
     * @return 受影响的行数
     */
    int updateUsername(String phone, String username);

    /**
     * 修改登录时间
     * @param id id
     */
    void updateLoginTimeById(Integer id);
}
